package lq3367;

import java.util.Scanner;
//lq3367，AC
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();
		long mod = (long) (7+1e9);
		
		//下标为楼梯，取值表示好坏
		//好的0，坏的-1
		int[] c = new int[N+1];
		for(int i=1;i<=M;i++)
			c[sc.nextInt()] = -1;
		
		//每一级楼梯的方案数
		//方案数可能会大于int取值范围
		//默认值都是0
		long[] dp = new long[N+1];
		
		
		//0级出发，如果1级不是坏的则dp[1]为1，否则为0;
		if(c[1]!=-1)
			dp[1] = 1;
		
		
		if(c[2]!=-1&&c[1]!=-1)
			dp[2] = 2; //如果1和2级不是坏的则dp[2]为2(两级台阶2个方案)
		else if(c[2]!=-1)
			dp[2] = 1; //如果1坏，2级不是坏的则dp[2]为1(一级台阶1个方案)
	
		
		//3级开始用递推计算，注意判断楼梯好坏和取模
		for(int i=3;i<=N;i++) {
			//当前楼梯是坏的
			if(c[i]==-1)
				continue;
			
			//递推计算
			dp[i] = (dp[i-1]+dp[i-2])%mod;
		}
		System.out.println(dp[N]);
	}

}
